package com.molichuxing.baselibrary.utils;

import android.app.Activity;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.text.TextUtils;
import android.util.Base64;
import android.view.View;
import android.view.inputmethod.InputMethodManager;

import com.molichuxing.baselibrary.BuildConfig;

import java.io.ByteArrayOutputStream;
import java.io.UnsupportedEncodingException;
import java.text.DecimalFormat;

public class HandlerCode {

    public static final int GoBack = 110110;//返回应用
    public static final int GoFinish = 110111;//退出应用

    public static final String BaseUrl = "http://39.105.62.49:8080/juyuan-client";//外网根接口
    public static final int HttpOk = 0;//成功
    public static final int HttpFail = 1;//失败
    public static final int ForResultImageBack = 104;//现场拍照
    public static final int PAY_SUC_BAC = 1024;//成功
    public static final String getImage = BaseUrl + "/systemController/getImage?imgName=";//获取图片

    /**
     * 筛选手机格式
     */
    public static boolean isMobileInfo(Context context,String number) {
        if (TextUtils.isEmpty(number)) {
            return false;
        }
        if (number.length()<4){
            return false;
        }
        String phoneSub = number.substring(0, 3);
        if (phoneSub.equals("170") || phoneSub.equals("171")){
            Tip.showTip(context, "暂不支持170、171号段的手机号");
            return true;
        }
        return false;
    }

    /**
     * 验证手机格式
     */
    public static boolean isMobile(Context mContext, String number) {
    /*
    移动：134、135、136、137、138、139、150、151、152、157(TD)、158、159、178(新)、182、184、187、188
    联通：130、131、132、152、155、156、185、186
    电信：133、153、170、173、177、180、181、189、（1349卫通）
    总结起来就是第一位必定为1，第二位必定为3或5或8，其他位置的可以为0-9
    */
//        String num = "[1][34578]\\d{9}";//"[1]"代表第1位为数字1，"[34578]"代表第二位可以为3、4、5、7、8中的一个，"\\d{9}"代表后面是可以是0～9的数字，有9位。
        if (TextUtils.isEmpty(number)) {
            Tip.showTip(mContext, "手机号不能为空");
            return false;
        }
        //matches():字符串是否在给定的正则表达式匹配
//            return number.matches(num);
        if (number.length() == 11) {
            return true;
        } else {
            Tip.showTip(mContext, "手机号格式不正确");
            return false;
        }
    }

    /**
     * 隐藏软键盘
     *
     * @param mContext
     */
    public static void hideKeyboard(Activity mContext) {
        InputMethodManager inputMethodManager = (InputMethodManager) mContext.getSystemService(mContext.INPUT_METHOD_SERVICE);
        if (inputMethodManager.isActive()) {
            inputMethodManager.hideSoftInputFromWindow(mContext.getCurrentFocus().getWindowToken(), 0);
        }
    }

    /**
     * 金额格式化转换
     * @param moneyStr
     * @return
     */
    public static String strToString(String moneyStr) {
        DecimalFormat df = new DecimalFormat("0.00");//输出"0.12"
//        DecimalFormat df = new DecimalFormat("00.00");//输出"00.12"
        moneyStr = df.format(Double.parseDouble(moneyStr));
//        LogUtils.i("dove", "imgstr-" + imgStr);
        if(TextUtils.isEmpty(moneyStr)){
            return "0";
        }
        String newStr = "";
        String result = "";
        try {
            if (moneyStr.contains(".")) {
//                LogUtils.i("dove",imgStr.split("\\.")[1]);
                int end = moneyStr.split("\\.")[1].length()+1;
                newStr =  moneyStr.substring(0,moneyStr.length()-end);
            }else{
                newStr = moneyStr;
            }
//            LogUtils.i("dove",newStr);
            int len = newStr.length()/3;
            int top = newStr.length()%3;
            result = moneyStr.substring(0,top);
//            LogUtils.i("dove",result);
//            LogUtils.i("dove",len+"-"+top);
            for(int i=0;i<len;i++){
                if(top==0&&i==0){
                    result = result+moneyStr.substring(top+i*3,top+i*3+3);
                }else{
                    result = result+","+moneyStr.substring(top+i*3,top+i*3+3);
                }
//                LogUtils.i("dove",result);
            }
            if (moneyStr.contains(".")) {
                result = result+moneyStr.substring(newStr.length(),moneyStr.length());
            }else{
                result = result;
            }
//            LogUtils.i("dove",result);
            return "¥"+result;
        } catch (Exception e) {
            e.printStackTrace();
            return "0";
        }
    }

    /**
     * 金额格式化转换
     * @param moneyStr
     * @return
     */
    public static String strToString2(String moneyStr) {
        DecimalFormat df = new DecimalFormat("0.00");//输出"0.12"
//        DecimalFormat df = new DecimalFormat("00.00");//输出"00.12"
        moneyStr = df.format(Double.parseDouble(moneyStr));
//        LogUtils.i("dove", "imgstr-" + imgStr);
        if(TextUtils.isEmpty(moneyStr)){
            return "0";
        }
        String newStr = "";
        String result = "";
        try {
            if (moneyStr.contains(".")) {
//                LogUtils.i("dove",imgStr.split("\\.")[1]);
                int end = moneyStr.split("\\.")[1].length()+1;
                newStr =  moneyStr.substring(0,moneyStr.length()-end);
            }else{
                newStr = moneyStr;
            }
//            LogUtils.i("dove",newStr);
            int len = newStr.length()/3;
            int top = newStr.length()%3;
            result = moneyStr.substring(0,top);
//            LogUtils.i("dove",result);
//            LogUtils.i("dove",len+"-"+top);
            for(int i=0;i<len;i++){
                if(top==0&&i==0){
                    result = result+moneyStr.substring(top+i*3,top+i*3+3);
                }else{
                    result = result+","+moneyStr.substring(top+i*3,top+i*3+3);
                }
//                LogUtils.i("dove",result);
            }
            if (moneyStr.contains(".")) {
                result = result+moneyStr.substring(newStr.length(),moneyStr.length());
            }else{
                result = result;
            }
//            LogUtils.i("dove",result);
            return result;
        } catch (Exception e) {
            e.printStackTrace();
            return "0";
        }
    }

    /**
     * 图片路径进行Base64转码
     *
     * @param imgStr
     * @return
     */
    public static String imgStr2String(String imgStr) {
//        LogUtils.i("dove", "imgstr-" + imgStr);
        try {
            if (TextUtils.isEmpty(imgStr)) {
                return "";
            }
            return imageToString(BitmapFactory.decodeFile(imgStr));
        } catch (Exception e) {
            e.printStackTrace();
            return "";
        }
    }

    /**
     * base64转码
     */
    public static String imageToString(Bitmap bit) {
        if (bit != null) {
            try {
                ByteArrayOutputStream bos = new ByteArrayOutputStream();
                bit.compress(Bitmap.CompressFormat.JPEG, 40, bos);//参数100表示不压缩
                byte[] bytes = bos.toByteArray();
                String base64 = Base64.encodeToString(bytes, Base64.DEFAULT);
//            String imgStr = base64.split("base64,")[0];
                return base64;
            } catch (Exception e) {
                e.printStackTrace();
                return "";
            }
        }
        return "";
    }

    /**
     * 是否显示加载界面
     *
     * @param flag
     */
    public static void setShowLoading(boolean flag, View mRelLoading) {
        if (mRelLoading != null) {
            if (flag) {
                mRelLoading.setVisibility(View.VISIBLE);
            } else {
                mRelLoading.setVisibility(View.GONE);
            }
        }
    }

    /**
     * 获取当前module的版本
     *
     * @return
     */
    public static String getVersionName() {
        String mVersion = BuildConfig.VERSION_NAME;
        return mVersion;
    }

    public static String toUtf8(String str) {
        String result = "";
        try {
            result = new String(str.getBytes("UTF-8"), "UTF-8");
        } catch (UnsupportedEncodingException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return result;
    }

}
